home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 145 / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan).7z / Gekkan Dennou Club - 2000.6 Vol. 145 (Japan) (Track 1).bin / tools / sharp / sxwork3.lzh / サンプル応用編 / 簡易ドロー / SDRAW.H < prev    next >
Text File  |  1994-03-10  |  5KB  |  166 lines

  1. /******************************************************************************
  2.  *    sdraw.h:    簡易ドロー用ヘッダファイル
  3.  ******************************************************************************
  4.  *    Workroom SX-68K Sample Program Copyright 1994 SHARP
  5.  *
  6.  *    定数定義
  7.  */
  8. /* ウィンドウタイトル */
  9. #define WINTITLE    ((_LASCII) "\x0a簡易ドロー")
  10.  
  11. /* ウィンドウサイズ */
  12. #define WIN_H        600        /* ウィンドウの幅    */
  13. #define WIN_V        300        /* ウィンドウの高さ    */
  14.  
  15. /* 数値調整ボタンのリピート時間(1/100秒単位)*/
  16. #define ADJFIRST    40        /* リピート開始時間    */
  17. #define ADJNEXT        12        /* リピート間隔        */
  18.  
  19. /* サブウィンドウサイズ */
  20. #define SUBWIN_H    170        /* ウィンドウの幅    */
  21. #define SUBWIN_V    118        /* ウィンドウの高さ    */
  22.  
  23. /* サブウィンドウのクローズボタンの位置 */
  24. #define CLOSE_X        (SUBWIN_H - 14)    /* X座標        */
  25. #define CLOSE_Y        4        /* Y座標        */
  26.  
  27. #define SW_MENUH    30
  28. #define SW_MENUV    30
  29.  
  30. #define MAX_RGN_CNT    100        /* リージョンの最大点数    */
  31.  
  32. /* イベントマスク */
  33. #define EVENTMASK    (EM_IDLE | EM_MSLDOWN | EM_MSLUP | EM_MSRDOWN | EM_UPDATE | EM_ACTIVATE | EM_SYSTEM1 | EM_SYSTEM2)
  34. /*
  35.  *    構造体宣言
  36.  */
  37. typedef struct DPoint {
  38.     double x;            /* X方向の値            */
  39.     double y;            /* Y方向の値            */
  40. } DPoint;
  41.  
  42. typedef struct ComData {
  43.     int id;                /* 図形の種類            */
  44.     struct ComData **next;        /* 次のデータのハンドル        */
  45.     Rect bounds;            /* データを囲むレクタングル    */
  46.     int color;            /* 描画色            */
  47.     Point penSize;            /* 描画ペンサイズ        */
  48.     int drawMode;            /* 枠(0)表示か塗りつぶし(1)表示か */
  49.     union {
  50.         Point radius;        /* ラウンドレクタングルのときのみ有効 */
  51.         struct {
  52.             int cnt;        /* リージョンの点数    */
  53.             DPoint dPoint[100];    /* リージョンの座標情報    */
  54.             Region **hdl;        /* リージョンハンドル    */
  55.         } rgn;
  56.     } ext;
  57. } ComData;
  58.  
  59. typedef struct ComVal {            /* 共通変数            */
  60.     Window *windowPtr;        /* ウィンドウポインタ        */
  61.     BOOLEAN activeFlag;        /* アクティブフラグ        */
  62.     TsEvent event;            /* イベントレコード        */
  63.     int eventMask;            /* イベントマスク        */
  64.     int errorCode;            /* エラーコード            */
  65.     BOOLEAN endFlag;        /* 終了フラグ            */
  66.     Subwin *subwinPtr;        /* サブウィンドウポインタ    */
  67.     Region **subRgnHdl;        /* サブウィンドウのリージョンハンドル */
  68.     BOOLEAN subActiveFlag;        /* サブウィンドウのアクティブフラグ */
  69.     /* サブウィンドウの数値調整ボタンのコントロールハンドル */
  70.     Control **adjBtnHdl;
  71.     /* サブウィンドウの数値調整ボタンのタイトル */
  72.     LASCII adjBtnTtl;
  73.     Point penSize;            /* 描画ペンサイズ        */
  74.     int drawType;            /* 現在の処理メニュー番号    */
  75.     int drawMode;            /* 枠(0)表示か塗りつぶし(1)表示か */
  76.     int paletFC;            /* 現在のフォアグラウンドカラー    */
  77.     int paletBC;            /* 現在のバックグラウンドカラー    */
  78.     Point downPos;            /* マウスレフトダウン時の入力点    */
  79.     Point upPos;            /* マウスレフトアップ時の入力点    */
  80.     int animFlag;            /* drawGraph処理フラグ        */
  81.     Point radius;            /* ラウンドレクタングルの直径    */
  82.     int rgnCnt;            /* リージョンの座標入力点数    */
  83.     DPoint rgnDPoint[100];        /* リージョンの座標格納場所    */
  84.     long clickTime;            /* 最後に左ボタンが離された時間    */
  85.     BOOLEAN dispRbFlag;        /* ラバーバンド表示フラグ    */
  86.     Rect rbSize;            /* ラバーバンド表示点        */
  87.     Point rbPos;
  88.     ComData **data;            /* データ格納領域へのハンドル    */
  89.     int dataCnt;            /* 格納データの件数        */
  90.     /* 現在アクティブな図形データへのハンドル */
  91.     ComData **actData;
  92.     /* ハンドル用レクタングルデータ格納場所 */
  93.     Rect rcHandle[8];
  94.     /* 選択処理のときに使用 -1:選択、0:移動、1~8:拡大・縮小 */
  95.     int selMode;
  96. } ComVal;
  97. /*
  98.  *    外部変数宣言
  99.  */
  100. extern Rect wsSize;            /* サブウィンドウサイズ    */
  101. extern Rect rcSubMenu;            /* メニューエリアリージョン */
  102. /*
  103.  *    関数プロトタイプ
  104.  */
  105. /* sdmain.c */
  106. BOOLEAN init(ComVal *);
  107. BOOLEAN createWindow(ComVal *);
  108. void idleEvent(ComVal *);
  109. void msLDownEvent(ComVal *);
  110. void msLUpEvent(ComVal *);
  111. void msRDownEvent(ComVal *);
  112. void selectMenu(ComVal *);
  113. void keyDownEvent(ComVal *);
  114. void updateEvent(ComVal *);
  115. void drawGraph(ComVal *);
  116. void activateEvent(ComVal *);
  117. void systemEvent(ComVal *);
  118. void showErrDialog(ComVal *);
  119. void endProc(int, ComVal *);
  120. BOOLEAN checkDClick(ComVal *);
  121. void repeatAdjBtn(ComVal *, int);
  122. void addUpdate(Window *, Rect *);
  123.  
  124. /* sdraw.c */
  125. void drawAll(ComVal *);
  126. void drawNext(ComVal *, ComData **);
  127. void drawOne(ComVal *, ComData **);
  128. void setInpRgnPos(ComVal *);
  129. void setComData(ComVal *, ComData **);
  130. void dispCurHdl(ComVal *);
  131. void dispHdlRect(ComVal *, int);
  132. void checkRectPos(Rect *);
  133. void checkPos(ComVal *, Point *);
  134. void drawGraphRgn(ComVal *);
  135. void makeRgn(ComVal *);
  136. void dispRubberBand(ComVal *, int);
  137. void drawZukei(ComVal *, int, int, Rect *);
  138. void dispRBRgn(ComVal *, BOOLEAN);
  139.  
  140. void selectZukei(ComVal *, LPoint);
  141. int checkHdl(ComVal *, LPoint);
  142. BOOLEAN checkZukei(ComData **, LPoint);
  143. BOOLEAN checkLine(Rect *, LPoint, Point *);
  144. int setRBRect(ComVal *, LPoint);
  145. void decisionZukei(ComVal *);
  146. void deleteData(ComVal *);
  147. void eraseData(ComVal *);
  148.  
  149. /* sdsubwin.c */
  150. BOOLEAN createSubwin(ComVal *);
  151. BOOLEAN createSubControl(ComVal *);
  152. void msLDownSubwin(ComVal *);
  153. int findSubwin(ComVal *, LPoint, int);
  154. BOOLEAN checkPctBtn(ComVal *, Rect *, LPoint, int);
  155. void revFillRect(Rect *);
  156. void revFrameRect(Rect *);
  157. void dragSubwin(ComVal *, LPoint);
  158. void drawSubwin(ComVal *);
  159. void drawSubTitleBar(ComVal *);
  160. void drawMenu(ComVal *);
  161. void calcPctBtn(int, Rect *);
  162. void drawPctBtn(ComVal *, int);
  163. void setPctBtn(ComVal *, int);
  164. void checkMenu(ComVal *, LPoint);
  165. void setDrawType(ComVal *, int);
  166.